---
sidebar_position: 2
---

# 命令行

Wails CLI 有许多用于管理项目的命令。 所有命令都以此方式运行：

`wails <命令> <标志>`

## 初始化

`wails init` 用于生成项目。

| 标志        | 描述                                             |   默认    |
|:--------- |:---------------------------------------------- |:-------:|
| -n "项目名称" | 项目名称。 **强制必填**                                 |         |
| -d "项目目录" | 要创建的项目目录                                       |   项目名   |
| -g        | 初始化 git 存储库                                    |         |
| -l        | 可用项目模板列表                                       |         |
| -q        | 禁止输出到控制台                                       |         |
| -t "模板名称" | 要使用的项目模板。 这可能是默认模板的名称或托管在 github 上的远程模板的 URL 。 | vanilla |
| -ide      | 生成 IDE 项目文件                                    |         |
| -f        | 强制构建应用                                         |  false  |

示例： `wails init -n test -d mytestproject -g -ide vscode -q`

这将在 "mytestproject" 目录生成一个名为 "test" 的项目，初始化 git，生成 vscode 项目文件并静默执行。

可以在 [此处](../guides/ides) 找到有关在 Wails 中使用 IDE 的更多信息。

### 远程模板

支持远程模板（托管在 GitHub ）并且可以使用模板项目的 URL 进行安装。

示例： `wails init -n test -t https://github.com/leaanthony/testtemplate[@v1.0.0]`

可以在 [此处](../community/templates.mdx) 找到社区维护的模板列表

:::warning 注意

**Wails 项目不维护也不对第 3 方模板负责**

如果您不确定某个模板，请检查 `package.json` 和 `wails.json` 中安装的模块和运行的脚本。

:::

## 构建

`wails build` 用于将您的项目编译为生产可用的二进制文件。

| 标志              | 描述                                                                                                            | 默认                                                                                                         |
|:--------------- |:------------------------------------------------------------------------------------------------------------- |:---------------------------------------------------------------------------------------------------------- |
| -platform       | 为指定的 [平台](../reference/cli#平台)（逗号分割）构建，例如： `windows/arm64`。 `windows/arm64`。 注意，如果不给出架构，则使用 `runtime.GOARCH`。 | 如果给定环境变量 platform = `GOOS` 否则等于 `runtime.GOOS`。 <br/>如果给定环境变量 arch = `GOARCH` 否则等于 `runtime.GOARCH`. |
| -clean          | 清理 `build/bin` 目录                                                                                             |                                                                                                            |
| -compiler "编译器" | 使用不同的 go 编译器来构建，例如 go1.15beta1                                                                                | go                                                                                                         |
| -ldflags "标志"   | 传递给编译器的额外 ldflags                                                                                             |                                                                                                            |
| -nopackage      | 不打包应用程序                                                                                                       |                                                                                                            |
| -o 文件名          | 输出文件名                                                                                                         |                                                                                                            |
| -s              | 跳过前端构建                                                                                                        | false                                                                                                      |
| -f              | 强制构建应用                                                                                                        | false                                                                                                      |
| -tags "额外标签"    | 构建标签以传递给 Go 编译器。 必须引用。 空格或逗号（但不能同时使用）分隔                                                                       |                                                                                                            |
| -upx            | 使用 “upx” 压缩最终二进制文件                                                                                            |                                                                                                            |
| -upxflags       | 传递给 upx 的标志                                                                                                   |                                                                                                            |
| -v int          | 详细级别 (0 - silent, 1 - default, 2 - verbose)                                                                   | 1                                                                                                          |
| -webview2       | WebView2 安装策略：download,embed,browser,error.                                                                   | download                                                                                                   |
| -u              | 更新项目的 `go.mod` 以使用与 CLI 相同版本的 Wails                                                                           |                                                                                                            |
| -debug          | 在应用程序中保留调试信息。 允许在应用程序窗口中使用 devtools                                                                           | false                                                                                                      |
| -trimpath       | 从生成的可执行文件中删除所有文件系统路径。                                                                                         | false                                                                                                      |
| -race           | 使用 Go 的竞态检测器构建                                                                                                | false                                                                                                      |
| -windowsconsole | 保留Windows构建控制台窗口                                                                                              |                                                                                                            |
| -obfuscate      | 使用 [garble](https://github.com/burrowers/garble) 混淆应用程序                                                       | false                                                                                                      |
| -garbleargs     | 传递给 garble 的参数                                                                                                | `-literals -tiny -seed=random`                                                                             |
| -nosyncgomod    | 不同步 go.mod 中的 Wails 版本                                                                                        | false                                                                                                      |

有关 `webview2` 标志的详细描述，请参阅 [Windows 系统指南](../guides/windows)。

如果您更喜欢使用标准 Go 工具进行构建，请参阅 [手动构建指南](../guides/manual-builds)。

示例：

`wails build -clean -o myproject.exe`

:::info

在 Mac 上，应用程序将被绑定到 `Info.plist`，而不是 `Info.dev.plist`。

:::

:::info 苹果芯片上的 UPX

在苹果芯片上使用 UPX 相关的 [问题](https://github.com/upx/upx/issues/446)。

:::

:::info Windows 上的 UPX

一些防病毒软件供应商误将 `upx` 压缩的二进制文件标记为病毒，请查看相关 [问题](https://github.com/upx/upx/issues/437)。

:::

### 平台

支持的平台有：

| 平台               | 描述                                            |
|:---------------- |:--------------------------------------------- |
| darwin           | MacOS + architecture of build machine         |
| darwin/amd64     | MacOS 10.13+ AMD64                            |
| darwin/arm64     | MacOS 11.0+ ARM64                             |
| darwin/universal | MacOS AMD64+ARM64 universal application       |
| windows          | Windows 10/11 + architecture of build machine |
| windows/amd64    | Windows 10/11 AMD64                           |
| windows/arm64    | Windows 10/11 ARM64                           |
| linux            | Linux + architecture of build machine         |
| linux/amd64      | Linux AMD64                                   |
| linux/arm64      | Linux ARM64                                   |

## 诊断检查

`wails doctor` 将运行诊断程序以确保您的系统已准备好进行开发。

示例：

```
Wails CLI v2.0.0-beta

Scanning system - Please wait (this may take a long time)...Done.

System
------
OS:             Windows 10 Pro
Version:        2009 (Build: 19043)
ID:             21H1
Go Version:     go1.18
Platform:       windows
Architecture:   amd64

Dependency      Package Name    Status          Version
----------      ------------    ------          -------
WebView2        N/A             Installed       93.0.961.52
npm             N/A             Installed       6.14.15
*upx            N/A             Installed       upx 3.96

* - Optional Dependency

Diagnosis
---------
Your system is ready for Wails development!

```

## 开发

`wails dev` 用于以 "实时开发" 模式运行您的应用。 这意味着：

- 应用程序的 `go.mod` 将被更新为与 Wails CLI 相同的版本
- 应用程序被编译并自动运行
- 一个观察者被启动，如果它检测到您的 go 文件的变化，它将触发您的开发应用程序的重新构建
- 启动一个网络服务器 `http://localhost:34115`，通过 http 为您的应用程序（不仅仅是前端）提供服务。 这允许您使用您喜欢的浏览器开发扩展
- 所有应用程序资源都从磁盘加载。 如果它们被更改，应用程序将自动重新加载（而不是重新构建）。 所有连接的浏览器也将重新加载
- 生成的 JS 模块提供以下内容：
  - 带有自动生成的 JSDoc 的 Go 方法的 JavaScript 包装器，提供代码提示
  - 您的 Go 结构体的 TypeScript 版本，可以构造并传递给您的 Go 方法
- 生成的第二个 JS 模块，为运行时提供包装器 + TS 声明
- 在 macOS 上，它会将应用程序打包到一个 `.app` 文件并运行它。 开发模式它将使用 `build/darwin/Info.dev.plist` 。

| 标志                           | 描述                                                                                                                               | 默认                |
|:---------------------------- |:-------------------------------------------------------------------------------------------------------------------------------- |:----------------- |
| -assetdir "./path/to/assets" | 从给定目录提供资产，而不是使用提供的资产 FS                                                                                                          | `wails.json` 中的值  |
| -browser                     | 在启动时打开浏览器到 `http://localhost:34115`                                                                                              |                   |
| -compiler "编译器"              | 使用不同的 go 编译器来构建，例如 go1.15beta1                                                                                                   | go                |
| -e                           | 触发重新构建的扩展（逗号分隔）                                                                                                                  | go                |
| -reloaddirs                  | 触发重新加载的附加目录（逗号分隔）                                                                                                                | `wails.json` 中的值  |
| -ldflags "标志"                | 传递给编译器的额外 ldflags                                                                                                                |                   |
| -tags "额外标签"                 | 传递给编译器的构建标签（引号和空格分隔）                                                                                                             |                   |
| -loglevel "日志级别"             | 要使用的日志级别 - Trace, Debug, Info, Warning, Error                                                                                    | Debug（调试）         |
| -noreload                    | 资产更改时禁用自动重新加载                                                                                                                    |                   |
| -nocolour                    | 关闭彩色命令行输出                                                                                                                        | false             |
| -nogen                       | 禁用生成模块                                                                                                                           |                   |
| -v                           | 详细级别 (0 - silent, 1 - standard, 2 - verbose)                                                                                     | 1                 |
| -wailsjsdir                  | 生成生成的Wails JS模块的目录                                                                                                               | `wails.json` 中的值  |
| -debounce                    | 检测到资产更改后等待重新加载的时间                                                                                                                | 100 (毫秒)          |
| -devserver "host:port"       | 将 wails 开发服务器绑定到的地址                                                                                                              | "localhost:34115" |
| -frontenddevserverurl "url"  | 使用 3rd 方开发服务器 url 提供资产，例如：Vite                                                                                                   | ""                |
| -appargs "参数"                | 以 shell 样式传递给应用程序的参数                                                                                                             |                   |
| -save                        | 将指定的 `assetdir`、 `reloaddirs`、 `wailsjsdir`、 `debounce` 、 `devserver` 和 `frontenddevserverurl` 标志的值保存到 `wails.json` 以成为后续调用的默认值。 |                   |
| -race                        | 使用 Go 的竞态检测器构建                                                                                                                   | false             |
| -s                           | 跳过前端构建                                                                                                                           | false             |
| -nosyncgomod                 | 不同步 go.mod 中的 Wails 版本                                                                                                           | false             |



示例：

`wails dev -assetdir ./frontend/dist -wailsjsdir ./frontend/src -browser`

此命令将执行以下操作：

- 构建应用程序并运行它（更多细节在 [这里](../guides/manual-builds)）
- 在 `./frontend/src` 中生成 Wails JS 模块
- 监听 `./frontend/dist` 中文件的更新并在更改时重新加载
- 打开浏览器并连接到应用程序

有更多关于在现有框架脚本中使用此功能的 [信息](../guides/application-development.mdx#live-reloading)。

## 生成

### 模板

Wails 使用模板来生成项目。 `wails generate template` 命令有助于构建模板，以使它可以用于生成项目。

| 标志             | 描述              |
|:-------------- |:--------------- |
| -name          | 模板名称（必填）        |
| -frontend "路径" | 要在模板中使用的前端项目的路径 |

有关创建模板的更多详细信息，请参阅 [模板指南](../guides/templates)。

### 模块

`wails generate module` 命令允许您为应用程序手动生成 `wailsjs` 目录。

## 更新

`wails update` 将更新 Wails CLI 的版本。

| 标志            | 描述          |
|:------------- |:----------- |
| -pre          | 更新到最新的预发布版本 |
| -version "版本" | 安装指定版本的 CLI |

## 版本

`wails version` 仅输出当前的 CLI 版本。
